// // npm i koa koa-bodyparser koa-router
const Koa = require('koa');
const fs = require('fs');
const Router = require('koa-router');
const dataBase = require('./dataBase');
const bodyParser = require('koa-bodyparser');

let data = [...dataBase];

const app = new Koa();
const router = new Router();

// 注意顺序，先注册bodyParser，再注册router
app.use(bodyParser());
app.use(router.routes()).use(router.allowedMethods());

router.get('/', (ctx) => {
  ctx.body = 'Hello World';
});
// get和post的区别
// get是从服务器获取数据，post是向服务器传送数据，本质上是没有区别的，只是语义上的差别
router.post('/api/login', (ctx) => {
  // get ctx.query
  // post ctx.request.body
  const { email, password } = ctx.request.body;
  if (!email) {
    ctx.body = {
      code: 1,
      msg: '请输入邮箱',
      data: null
    };
    return;
  }
  if (!password) {
    ctx.body = {
      code: 1,
      msg: '请输入密码',
      data: null
    };
    return;
  }
  // 先判断库里有没有email（邮箱）
  const user = data.find((user) => user.email === email);
  // 如果没有这个邮箱
  if (!user) {
    ctx.body = {
      code: 1,
      msg: '用户不存在',
      data: null
    };
    return;
  }
  // 如果有这个邮箱，再判断密码是否正确
  if (user.password === password) {
    ctx.body = {
      code: 0,
      msg: '登录成功',
      data: null
    };
  } else {
    ctx.body = {
      code: 1,
      msg: '密码错误',
      data: null
    };
  }
});
router.post('/abc/register', (ctx) => {
  const { email, password } = ctx.request.body;
  if (!email) {
    ctx.body = {
      code: 1,
      msg: '请输入邮箱',
      data: null
    };
    return;
  }
  if (!password) {
    ctx.body = {
      code: 1,
      msg: '请输入密码',
      data: null
    };
    return;
  }
  // 先判断库里有没有email（邮箱）
  const user = data.find((user) => user.email === email);
  // 如果有这个邮箱
  if (user) {
    ctx.body = {
      code: 1,
      msg: '用户已存在',
      data: null
    };
    return;
  }
  // 如果没有这个邮箱，就注册
  data.push({
    email,
    password
  });
  fs.writeFileSync('./dataBase.json', JSON.stringify(data));
  ctx.body = {
    code: 0,
    msg: '注册成功',
    data: null
  };
});

app.listen(9999, () => {
  console.log('Server is running at http://localhost:9999');
});